Why
為什麼我們要檢查使用者輸入的資料呢?
How
讓我們使用 composer 來安裝別人寫好的功能吧
在終端機打上
composer require wixel/gump
或是編輯 composer.json
{
    "require": {
        "wixel/gump": "dev-master"
    }
}
再切到終端機執行
composer install
使用說明書在這裡:
那我們直接實作到專案上來看看效果:
route.php
<?php
$route = new Router(Request::uri()); //搭配 .htaccess 排除資料夾名稱後解析 URL
$route->getParameter(1); // 從 http://127.0.0.1/game/aaa/bbb 取得 aaa 字串之意
// 用參數決定載入某頁並讀取需要的資料
switch($route->getParameter(1)){
    case "do_create":
      $hero_name = "";
      $hero_description = "";
      
      // 移除跨站攻擊的不安全代碼
      $data = GUMP::xss_clean($_POST);
      // 設定驗證規則
      $is_valid = GUMP::is_valid($data, array( 
        'hero_name' => 'required',
        'hero_description' => 'required|max_len,100|min_len,6'
      ));
      
      if($is_valid === true) { // 如果符合規則的話
          $table = "hero";
          $data_array['hero_name'] = $data['hero_name'];
          $data_array['hero_description'] = $data['hero_name'];
          Database::get()->insert($table, $data_array);
          header("Location: ".WebsiteConfig::BASE_URL."success");
      } else {
        print_r($is_valid);
        die;
      }
      exit;
    break;
    case "create":
      include('view/header/default.php'); // 載入共用的頁首
      include('view/body/create.php');    // 載入新增用的表單
      include('view/footer/default.php'); // 載入共用的頁尾
    break;
    case "success":
      include('view/header/default.php'); // 載入共用的頁首
      include('view/body/success.php');    // 載入新增用的表單
      include('view/footer/default.php'); // 載入共用的頁尾
    break;
    case "list":
      // 讀取全英雄列表資料
      // Database::get()->query( ...略... );
      include('view/header/default.php'); // 載入共用的頁首
      include('view/body/list.php');
      include('view/footer/default.php'); // 載入共用的頁尾
    break;
    case "hero":
      // 讀取單一英雄資料
      // Database::get()->query( ...略... );
      include('view/header/default.php'); // 載入共用的頁首
      include('view/body/hero.php');
      include('view/footer/default.php'); // 載入共用的頁尾
    break;
    default:
      include('view/header/default.php'); // 載入共用的頁首
      include('view/body/default.php');
      include('view/footer/default.php'); // 載入共用的頁尾
    break;
}
建立一個 view/body/success.php
<?php 
echo "success";
在這裡輸入資料
如果有欄位是空的就會:
Array ( [0] => The Hero Name field is required )
如果描述欄位少於6個字:
Array ( [0] => The Hero Description field needs to be at least 6 characters )
wixel/gump 最新版2.0棄用了GUMP::xss_clean ,安裝 wixel/gump 記得安裝舊版,才能用!